// import 'dart:async';
// import 'dart:convert';
// import 'dart:io';
// import 'dart:typed_data';

// import 'package:flutter_bd_ars/flutter_bd_ars.dart';
// import 'package:flutter_chat_ui/mixin/chat_mixin.dart';
// import 'package:flutter_chat_ui/pages/asr/asr_audio_player.dart';
// import 'package:flutter_chat_ui/pages/asr/asr_recognition_data.dart';
// import 'package:flutter_chat_ui/utils/utils.dart';
// import 'package:get/get.dart';
// import 'package:logger/web.dart';

// ///
// /// 用于测试语音识别
// ///
// class AsrController extends GetxController with ChatReuqestMixin {
//   final FlutterBdArs _flutterBdArs = FlutterBdArs();

//   /// 语音识别文本
//   final recognitionText = ''.obs;

//   /// 机器人回答识别文本的markdown数据
//   final answerTextMd = ''.obs;
//   // 机器人是否正在响应输出
//   final isResponding = false.obs;

//   @override
//   void onInit() async {
//     /// 初始化监听语音回调
//     listenASRCallback();

//     super.onInit();
//   }

//   @override
//   void onClose() {
//     _flutterBdArs.cancelListenerClientWorkStatus();
//     super.onClose();
//   }
// }

// extension AsrControllerExt on AsrController {
//   ///
//   ///
//   /// 初始化配置
//   Future<bool> initASRConfig() async {
//     /// 初始化插件配置
//     var success = false;

//     if (Platform.isIOS) {
//       success = await _flutterBdArs.initConfig(
//         APP_KEY: 'J9NrCna1LYiPuOOjqSsZqltr',
//         SECRET_KEY: 'mranoWC1SBjA7xmBqctJc8BGoaFRChY0',
//         APP_ID: '119274380',
//       );
//     } else {
//       success = await _flutterBdArs.initConfig(
//         APP_KEY: '4X9lW8jfB4n8gBgth1hzzaQS',
//         SECRET_KEY: 'RvhjCFPuHvtn9zqL86gdrcdn5zIQiYCW',
//         APP_ID: '119274392',
//       );
//     }

//     return success;
//   }

//   ///
//   /// 唤醒
//   ///
//   Future<void> startWakeup() async {
//     await _flutterBdArs.startWakeup();
//   }

//   ///
//   ///
//   /// 监听语音回调
//   void listenASRCallback() {
//     // 先初始化唤醒回调
//     _flutterBdArs.listenerClientWorkStatus((value) async {
//       final wpStatus = XWakeupClientWorkStatus.fromInt(value[KEY_WP_WORK_STATUES]);
//       final asrStatus = XRecognitionClientWorkStatus.fromInt(value[KEY_ASR_WORK_STATUES]);
//       // 命中唤醒词
//       if (wpStatus == XWakeupClientWorkStatus.triggered) {
//         // 播放提示音
//         await AsrAudioPlayer.playStartSound();
//         // 开始识别
//         Future.delayed(const Duration(milliseconds: 500), () async => await _flutterBdArs.startSpeechASR());
//       }

//       // 语音识别
//       if (asrStatus == XRecognitionClientWorkStatus.finish) {
//         // 播放成功的音频
//         await AsrAudioPlayer.playSuccessSound();

//         final resultString = value[KEY_RESULT] as String;
//         // 字符串转为Map
//         try {
//           final resultMap = json.decode(resultString) as Map<String, dynamic>;
//           final data = VoiceRecognitionResultData.fromJson(resultMap);
//           print("语音识别结束：识别状态：$asrStatus，结果：${data.resultsRecognition.first}");
//           // 赋值
//           final query = data.resultsRecognition.first;
//           recognitionText.value = query;
//           // 发送Ai儿童故事
//           getStoryContent(query);
//         } catch (e) {
//           print("解析语音识别结果失败: $e");
//         }
//       } else if (asrStatus == XRecognitionClientWorkStatus.error) {}
//     });
//   }
// }

// extension AsrControllerRequest on AsrController {
//   void getStoryContent(String query) {
//     isResponding.value = true;

//     requestGetRobotResponse(
//       query,
//       userId: Utils.userId,
//       mode: ResponseMode.blocking,
//       success: (data) async {
//         final transformStream = await data
//             .transform(
//               StreamTransformer<Uint8List, String>.fromHandlers(
//                 handleData: (data, sink) => sink.add(utf8.decode(data)),
//               ),
//             )
//             .transform(const LineSplitter())
//             .toList();

//         for (final value in transformStream) {
//           if (value.isNotEmpty) {
//             try {
//               // 解析 JSON 数据
//               final json = jsonDecode(value);
//               final event = json['event'] ?? '';

//               switch (event) {
//                 case 'workflow_started':
//                 case 'node_started':
//                 case 'node_finished':
//                 case 'workflow_finished':
//                   Logger().d('处理 $event，事件: $json');
//                   break;
//                 case 'message':
//                   Logger().d('message事件: $event，事件: $json');
//                   answerTextMd.value = json['answer'];
//                   break;
//                 case 'message_end':
//                   Logger().d('message_end事件: $event，事件: $json');
//                   break;
//                 case 'tts_message': // TTS 音频流事件，即：语音合成输出
//                 case 'tts_message_end': // TTS 音频流结束事件
//                   Logger().d('处理 $event 事件: $json');
//                   break;
//                 default:
//                   Logger().d('未知事件: $event');
//               }
//             } catch (e) {
//               Logger().e('Error parsing JSON: $e');
//             }
//           }
//         }
//       },
//       fail: (code, msg) {
//         Logger().e("获取故事请求失败：$code，$msg");
//       },
//       complete: () {
//         Logger().f("获取故事请求结束");
//         isResponding.value = false;
//       },
//     );

//     //   Map<String, dynamic> params = {
//     //     'query': query,
//     //     "user": Utils.userId,
//     //     'conversation_id': '',
//     //     "response_mode": ResponseMode.blocking.value,
//     //     "inputs": {},
//     //     "files": [],
//     //   };
//     //   XHttpRequest.request(
//     //     Method.post,
//     //     '/chat-messages',
//     //     params: params,
//     //     success: (data) {
//     //       /// 处理流式响应
//     //       ALog("获取故事请求成功：$data");
//     //     },
//     //     fail: (code, msg) {
//     //       ALog("获取故事请求失败：$code，$msg", mode: ALogMode.error);
//     //     },
//     //     complete: () {
//     //       ALog("获取故事请求结束");
//     //     },
//     //   );
//   }
// }
